/**
* \file __CDAOSchema.h
* \author Corentin Le Bail
* \date 2009-2012
* \brief Fichier de déclaration de la class CDAOSchema
*/
//------------------------------------------------------------------------------
#ifndef __CDAOSCHEMA_H__
#define __CDAOSCHEMA_H__
//------------------------------------------------------------------------------
#include "CDAO.h"
//------------------------------------------------------------------------------
/**
* \class CDAOSchema __CDAOSchema.h "__CDAOSchema.h"
* \brief Classe : Schémas spéciaux.
*/
class CDAOSchema : public CDAO {
	private:
		QVariant _table;
		QVariant _champ;
		QVariant _attribut;
		QVariant _condition;
		QVariant _positionRecherche;
		QVariant _textCondition;
		QVariant _defaut;
		QVariant _calcul;
		QVariant _formule;
		QVariant _evalTime;
	public:
		/**
		 * \fn  QString getTableName(void)
		 * \return La nom de la table de la base de données
		 */
		QString getTableName(void) { return "schema"; }
		/**
		 * \fn QVariant getFieldTable(void) 
		 * \return Table
		 */
		QVariant getFieldTable(void) { return _table; }; 
		/**
		 * \fn QVariant void setFieldTable(QVariant table) 
		 * \brief affecte Table
		 */
		void setFieldTable(QVariant table) { _table=table; }; 
		/**
		 * \fn QVariant getFieldChamp(void) 
		 * \return Champ
		 */
		QVariant getFieldChamp(void) { return _champ; }; 
		/**
		 * \fn QVariant void setFieldChamp(QVariant champ) 
		 * \brief affecte Champ
		 */
		void setFieldChamp(QVariant champ) { _champ=champ; }; 
		/**
		 * \fn QVariant getFieldAttribut(void) 
		 * \return Attribut du champ (1: obligatoire, 2: rechercher, 4: recherche conditionnel, 8: recherche sur calcul, 16: Champ calculé)
		 */
		QVariant getFieldAttribut(void) { return _attribut; }; 
		/**
		 * \fn QVariant void setFieldAttribut(QVariant attribut) 
		 * \brief affecte Attribut du champ (1: obligatoire, 2: rechercher, 4: recherche conditionnel, 8: recherche sur calcul, 16: Champ calculé)
		 */
		void setFieldAttribut(QVariant attribut) { _attribut=attribut; }; 
		/**
		 * \fn QVariant getFieldCondition(void) 
		 * \return Condition quand champ obligatoire conditionnel
		 */
		QVariant getFieldCondition(void) { return _condition; }; 
		/**
		 * \fn QVariant void setFieldCondition(QVariant condition) 
		 * \brief affecte Condition quand champ obligatoire conditionnel
		 */
		void setFieldCondition(QVariant condition) { _condition=condition; }; 
		/**
		 * \fn QVariant getFieldPositionRecherche(void) 
		 * \return Position quand champ de recherche
		 */
		QVariant getFieldPositionRecherche(void) { return _positionRecherche; }; 
		/**
		 * \fn QVariant void setFieldPositionRecherche(QVariant positionRecherche) 
		 * \brief affecte Position quand champ de recherche
		 */
		void setFieldPositionRecherche(QVariant positionRecherche) { _positionRecherche=positionRecherche; }; 
		/**
		 * \fn QVariant getFieldTextCondition(void) 
		 * \return Condition en langage humain
		 */
		QVariant getFieldTextCondition(void) { return _textCondition; }; 
		/**
		 * \fn QVariant void setFieldTextCondition(QVariant textCondition) 
		 * \brief affecte Condition en langage humain
		 */
		void setFieldTextCondition(QVariant textCondition) { _textCondition=textCondition; }; 
		/**
		 * \fn QVariant getFieldDefaut(void) 
		 * \return Champ retourné par défaut lors d'une recherche
		 */
		QVariant getFieldDefaut(void) { return _defaut; }; 
		/**
		 * \fn QVariant void setFieldDefaut(QVariant defaut) 
		 * \brief affecte Champ retourné par défaut lors d'une recherche
		 */
		void setFieldDefaut(QVariant defaut) { _defaut=defaut; }; 
		/**
		 * \fn QVariant getFieldCalcul(void) 
		 * \return Expression SQL du champ calculé !!!! doit retourner un seul enregistrement (GROUP BY ...) !!!!
		 */
		QVariant getFieldCalcul(void) { return _calcul; }; 
		/**
		 * \fn QVariant void setFieldCalcul(QVariant calcul) 
		 * \brief affecte Expression SQL du champ calculé !!!! doit retourner un seul enregistrement (GROUP BY ...) !!!!
		 */
		void setFieldCalcul(QVariant calcul) { _calcul=calcul; }; 
		/**
		 * \fn QVariant getFieldFormule(void) 
		 * \return Formule de calcul
		 */
		QVariant getFieldFormule(void) { return _formule; }; 
		/**
		 * \fn QVariant void setFieldFormule(QVariant formule) 
		 * \brief affecte Formule de calcul
		 */
		void setFieldFormule(QVariant formule) { _formule=formule; }; 
		/**
		 * \fn QVariant getFieldEvalTime(void) 
		 * \return Temps d'évaluation, 1: quand nouvelle enregistrement et 2: quand modification
		 */
		QVariant getFieldEvalTime(void) { return _evalTime; }; 
		/**
		 * \fn QVariant void setFieldEvalTime(QVariant evalTime) 
		 * \brief affecte Temps d'évaluation, 1: quand nouvelle enregistrement et 2: quand modification
		 */
		void setFieldEvalTime(QVariant evalTime) { _evalTime=evalTime; }; 
		/**
		 * \fn CDAOSchema(void)
		 * \brief Constructeur
		 */
		CDAOSchema(void) : CDAO() {
			addKey("table");
			addField("table");
			addKey("champ");
			addField("champ");
			addField("attribut");
			addField("condition");
			addField("positionRecherche");
			addField("textCondition");
			addField("defaut");
			addField("calcul");
			addField("formule");
			addField("evalTime");
		}
		virtual void set(QString fieldName, QVariant value) {
			if(fieldName == "table") {
				setFieldTable(value);
			}
			if(fieldName == "champ") {
				setFieldChamp(value);
			}
			if(fieldName == "attribut") {
				setFieldAttribut(value);
			}
			if(fieldName == "condition") {
				setFieldCondition(value);
			}
			if(fieldName == "positionRecherche") {
				setFieldPositionRecherche(value);
			}
			if(fieldName == "textCondition") {
				setFieldTextCondition(value);
			}
			if(fieldName == "defaut") {
				setFieldDefaut(value);
			}
			if(fieldName == "calcul") {
				setFieldCalcul(value);
			}
			if(fieldName == "formule") {
				setFieldFormule(value);
			}
			if(fieldName == "evalTime") {
				setFieldEvalTime(value);
			}
		}
		virtual QVariant get(QString fieldName) {
			if(fieldName == "table") {
				return getFieldTable();
			}
			if(fieldName == "champ") {
				return getFieldChamp();
			}
			if(fieldName == "attribut") {
				return getFieldAttribut();
			}
			if(fieldName == "condition") {
				return getFieldCondition();
			}
			if(fieldName == "positionRecherche") {
				return getFieldPositionRecherche();
			}
			if(fieldName == "textCondition") {
				return getFieldTextCondition();
			}
			if(fieldName == "defaut") {
				return getFieldDefaut();
			}
			if(fieldName == "calcul") {
				return getFieldCalcul();
			}
			if(fieldName == "formule") {
				return getFieldFormule();
			}
			if(fieldName == "evalTime") {
				return getFieldEvalTime();
			}
			return QVariant();
		}
};
//------------------------------------------------------------------------------
#endif //__CDAOSCHEMA_H__
//------------------------------------------------------------------------------
